/**
在 Node.js 中，全局对象是一个非常重要的概念。它包含了一些在任何模块中都可以访问的属性和方法。全局对象的存在使得开发者能够在不同的模块之间共享一些常用的功能和数据。以下是 Node.js 全局对象的使用总结说明。
一、全局对象的定义
在 Node.js 中，全局对象是  `global` 。与浏览器中的  `window`  对象类似， `global`  对象提供了一些全局可用的方法和属性，可以在任何模块中直接访问。

二、常用的全局对象属性和方法
 1.  `global`  对象
 `global`  是 Node.js 中的全局对象，你可以在任何模块中直接访问它。可以通过以下方式访问：
console.log(global);
 2.  `process`  对象
 `process`  是一个全局变量，提供有关当前 Node.js 进程的信息和控制。常用属性和方法包括：
-  `process.env` ：获取环境变量。
-  `process.argv` ：获取命令行参数。
-  `process.exit()` ：退出当前进程。

示例：
console.log(process.env); // 输出环境变量
console.log(process.argv); // 输出命令行参数
 3.  `__dirname`  和  `__filename` 

-  `__dirname` ：当前模块的目录名。
-  `__filename` ：当前模块的文件名，包括路径。
示例：
console.log(__dirname); // 输出当前模块的目录
console.log(__filename); // 输出当前模块的文件名
 4.  `setTimeout()`  和  `setInterval()` 

这两个方法用于设置定时器，在 Node.js 中是全局可用的。

-  `setTimeout(callback, delay)` ：在指定的延迟后执行回调函数。
-  `setInterval(callback, delay)` ：每隔指定的时间间隔执行回调函数。
示例：
setTimeout(() => {
    console.log('延迟 1 秒执行');
}, 1000);

setInterval(() => {
    console.log('每 2 秒执行一次');
}, 2000);
 5.  `require()` 

 `require()`  是一个全局函数，用于引入模块。可以引入 Node.js 内置模块、自定义模块或第三方模块。

示例：
const fs = require('fs'); // 引入文件系统模块
 6.  `Buffer` 

 `Buffer`  是 Node.js 中用于处理二进制数据的全局对象。可以通过  `Buffer`  类创建一个新的 Buffer 实例。

示例：
const buffer = Buffer.from('Hello, World!');
console.log(buffer); // 输出 Buffer 对象
三、总结
- Node.js 中的全局对象是  `global` ，它提供了一些在任何模块中都可以访问的属性和方法。
- 常用的全局对象包括  `process` 、 `__dirname` 、 `__filename` 、 `setTimeout()` 、 `setInterval()`  和  `Buffer` 。
- 这些全局对象和方法极大地方便了 Node.js 开发，使得模块之间的交互和数据处理更加简单和高效。
 */

// 1. global全局对象
// console.log(global);

// 2. process全局对象: 获取进程信息
// console.log(process);
// console.log(process.argv); // 获取命令行参数

// 3. __dirname: 获取当前模块的目录
console.log(__dirname); // 输出当前模块的目录

// 4. __filename: 获取当前模块的文件名
console.log(__filename); // 输出当前模块的目录到文件名

// 5. setTimeout(callback, delay): 在指定的延迟后执行回调函数
// setTimeout(() => {
//     console.log('延迟 1 秒执行');
// }, 1000);

// 6. setInterval(callback, delay): 每隔指定的时间间隔执行回调函数
// setInterval(() => {
//     console.log('每 2 秒执行一次');
// }, 2000);

// 7. require(): 引入模块
// const fs = require('fs');

// 8. exports: 导出模块
// module.exports = { name: '张三', age: 18 };

// 9. setImmediate(): 在指定的延迟后执行回调函数
// setInterval(() => {
//     console.log('每 2 秒执行一次');
// }, 2000);

// 10. 额外执行函数
// process.on('exit', (code) => {
//   console.log('进程退出，退出码：', code);
// })

// process.nextTick(() => {
//   console.log('这是一个 nextTick 回调');
// })

// 11. globalThis: 全局对象
// console.log(globalThis);
console.log(globalThis === global);
